package com.solution.wx.share.service;

import java.util.List;
import java.util.Map;

import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.wx.share.entity.ShareCommentEntity;

/**
 * 用户评论service接口
 * @author xkl
 * @date 2018年5月3日 下午8:12:35
 */
public interface ShareCommentService {
	
	/**
	 * 根据ID获取评论
	 * @param commentId
	 * @return
	 * @author xkl
	 * @date 2018年5月8日 下午4:16:03
	 */
	public ShareCommentEntity getShareCommentById(Long commentId);
	
	/**
	 * 获取评论分页列表
	 * @param pageParam
	 * @param param
	 * @author xkl
	 * @date 2018年5月8日 下午4:16:27
	 */
	public PageBean listShareCommentPage(PageParam pageParam, Map<String, Object> param);
	
	/**
	 * 获取评论分页列表并包含3条子评论
	 * @param pageParam
	 * @param param
	 * @return
	 * @author xkl
	 * @date 2018年5月8日 下午5:29:28
	 */
	public PageBean listShareCommentPageWithReply(PageParam pageParam, Map<String, Object> param);
	
	/**
	 * 用户对评论点赞
	 * @param commentId
	 * @param customerId
	 * @return
	 * @author xkl
	 * @date 2018年5月9日 下午5:57:32
	 */
	public Long doShareCommentLike(Long commentId, Long customerId);
	
	/**
	 * 用户是否对该评论点赞
	 * @param commentId
	 * @param customerId
	 * @return
	 * @author xkl
	 * @date 2018年5月9日 下午6:04:12
	 */
	public Long isUserCommentLike(Long commentId, Long customerId);
	
	/**
	 * 保存评论
	 * @param entity
	 * @return
	 * @author xkl
	 * @date 2018年5月9日 下午6:46:51
	 */
	public Long saveShareComment(ShareCommentEntity entity);

	/**
	 * 删除客户分享评论
	 * 
	 * @param
	 * @return int 返回删除记录条数
	 * @author xu_cc
	 * @date 2018-05-07 15:23:32
	 */
	public int deleteShareCommentById(long id);

	/**
	 * 更新客户分享评论
	 * 
	 * @param ShareCommentEntity
	 *            客户分享评论对象
	 * @return int 更新是否成功，>1代表更新成功
	 * @author xu_cc
	 * @date 2018-05-07 15:23:32
	 */
	public int updateShareComment(ShareCommentEntity shareCommentEntity);

	/**
	 * 根据条件查询客户分享评论
	 * 
	 * @param param
	 * @return 客户分享评论列表
	 * @author xu_cc
	 * @date 2018-05-07 15:23:32
	 */
	public List<ShareCommentEntity> listShareComment(Map<String, Object> param);

	/**
	 * 客户端评论展示
	 * 
	 * @param pageParam
	 *            分页对象
	 * @param shareComment
	 *            分页参数
	 * @return PageBean 分页参数及数据
	 * @author xu_cc
	 * @date 2018-05-07 15:23:32
	 */
	public PageBean listShowCommentPage(PageParam pageParam, Map<String, Object> param);
	
	/**
	 * 获取评论点赞数
	 * @param commentId
	 * @return
	 * @author xkl
	 * @date 2018年5月24日 下午2:19:30
	 */
	public Long getShareCommentLikeQuantity(Long commentId);
	
	/**
	 * 批量更新评论点赞数
	 * @param commentList
	 * @return
	 * @author xkl
	 * @date 2018年5月24日 下午2:35:29
	 */
	public Integer updateShareCommentLikeQuantity(List<ShareCommentEntity> commentList);
}
